package com.kaifamiao.bytestreams;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;

/**
 * InputStream类中的方法
 * 4、int read( byte[] buffer ) 从当前字节输入流中读取一批字节到字节数组中并返回实际读取到的字节数；
 *                              如果因为已经到达流末尾而不再有数据可用，则返回 -1 。
 *
 */
public class InputStreamTest2 {

    public static void main(String[] args) throws IOException {

        File fod = new File( "hello.txt" );

        if( fod.isFile() ) {
            final long size = fod.length();
            System.out.println( size + " bytes." );
            // 创建一个用于读取 fod 所表示文件的 字节输入流
            InputStream in = new FileInputStream( fod );

            // 用来记录实际读取到的字节数
            int n;
            // 用来缓存从字节输入流中读取到的字节
            final byte[] buffer = new byte[10];
            // 从字节输入流中读取字节到buffer数组中并返回实际读取到的字节数
            while( ( n = in.read( buffer) ) != -1 ) {
                // 将 buffer 数组中 [ 0 , n ) 之间的字节 按照指定编码 构造成字符串
                String str = new String(buffer, 0, n, StandardCharsets.UTF_8);
                System.out.print(str);
            }

            // 关闭字节输入流
            in.close();
        }

    }

}
